package leecode

func isHappy(n int) bool {
	//创建一个map集合判断是否出现重复数据 , 出现则为false
	numsMap := make(map[int]int) //key为各个位相加得到的和,value为出现的次数
	numsMap[n] = 1
	for n != 1 {
		n = sum(n)
		if _, ok := numsMap[n]; ok {
			//如果map集合中已经出现了n 则结束
			return false
		} else {
			numsMap[n] = 1
		}

	}
	return true
}

// 求各位数字相加的和
func sum(n int) (sum int) {
	for n > 0 {
		temp := n % 10
		n = n / 10
		sum += temp * temp
	}
	return sum
}
